1. Field of the Invention
The present invention relates to generation of multiple, PN matched-filter vectors for high-rate, multiplexed correlation in a CDMA demodulator.
2. Description of the Related Art
Several code division, multiple-access (CDMA) standards have been proposed, and one such standard is the IS-95 standard adopted for cellular telephony. As with many CDMA systems, IS-95 employs both a pilot channel for a base station and data or message channels for communication by the base station and users. The base station and users communicating with the base station each employ assigned, pseudo-random sequences, also known as pseudo-noise (PN) code sequences, for spread-spectrum "spreading" of the channels. The assigned PN code sequence is a sequence of a predetermined number of bits. For each user transceiver, the PN code sequence is used to spread data transmitted by the transceiver and to despread data received by the transceiver. The PN code sequence is used for both In-phase (I) and Quadrature-phase (Q) channels, is a sequence with a known number of bits, and is transmitted at a predetermined clock rate.
Each bit-period, or phase transition, of the PN code sequence is defined as a chip, which is a fraction of the bit-period of each data symbol. Consequently, the PN code sequence is combined with the data sequence so as to "spread" in frequency the frequency spectrum of the data. In IS-95, for example, 64 chips represent one data symbol. The pilot channel and each user are also assigned a different Walsh code that is combined with the spread channel to make each spread channel signal orthogonal. The pilot channel is assigned the all zeros Walsh code. An exclusive-OR combination of the zero Walsh code with the PN code sequence of the I and Q channels, respectively, leaves the PN code sequence of the pilot channel unaltered. No data symbols are spread or transmitted on the pilot channel.
To determine when a signal is transmitted, and to synchronize the reception and processing of a transmitted signal, IS-95 specifies a search finger correlating a known portion of the PN code sequence, for example, an IS-95 pilot epoch, with the sampled received signal. The pilot epoch is the time interval over which a pseudo-noise (PN) code sequence of a pilot signal repeats. The known portion of the IS-95 pilot epoch is the first 64 chips output from I-phase and Q-phase PN sequence generators subsequent to a rollover state. The beginning of the pilot epoch is the rollover state, and is the state at which the I-phase sample sequence and Q-phase sample sequence PN generators have the same logic value in all register stages of the PN code generator. The IS-95 system may insert an extra value in the PN code sequence so that the PN code sequence is a multiple of 2. Additional logic may be required to insert the extra value into each sequence following 14 consecutive 1's or 0's. The extra value renders a 2.sup.15 chip period PN sequence. Consequently, or systems such as IS-95, at the beginning of the pilot epoch the value in the first register stage is forced o a logic "1" prior to the next state transition from the all zero register state.
Demodulation of a spread signal received from a communication channel requires synchronization of a locally generated version of the PN code sequence with the embedded PN code sequence in the spread signal. Then, the synchronized, locally generated PN code sequence is correlated against the received signal and the cross-correlation extracted between the two. The signal of the extracted cross-correlation is the despread data signal. For IS-95 systems, demodulation begins by first synchronizing a local code sequence pair, one for the I-phase spread data channel (I-channel) and one for the Q-phase spread data channel (Q-channel), with an identical pair of PN code sequences embedded in the signal received from the communication channel.
Communication systems are often subject to transmission path distortion in which portions, or paths, of a transmitted signal arrive at a receiver, each signal having a different time offset and/or carrier phase rotation. Consequently, the transmitted signal appears as a multiplicity of received signals, each having variations in parameters relative to the transmitted signal, such as different delays, gains and phases. Relative motion between a transmitter and receiver further contribute to variations in the received signal. The receiver desirably reconstructs the transmitted signal from the multiplicity of received signals.
A type of receiver particularly well suited for reception of multipath, spread spectrum signals is a RAKE receiver. The RAKE receiver comprises several search fingers to cross correlate each multipath signal with an offset version of the local PN code sequence. The RAKE receiver optimally combines the multipath signals received from the various paths to provide an extracted cross-correlated signal with high signal-to-noise ratio (SNR). The RAKE receiver may be analogized to a matched-filter where the path gains of each search finger, like the taps of a matched-filter, may be estimated to accurately detect a received multipath, spread spectrum signal. Since a transmitted signal is subject to many types of distortion as it passes through a communication channel to a receiver (i.e., multipath effects, Rayleigh fading, and Doppler shifts), the receiver must estimate the path gains utilizing the transmitted signal as distorted at the receiver. Thus, the detected received signal will only be as good as the path gain estimation of each search finger in the RAKE receiver.
U.S. Pat. Nos. 5,448,600; 5,442,661; 5,442,627; 5,361,276; 5,327,455; 5,305,349; and 5,237,586, the disclosures of which are hereby incorporated by reference, each describe a RAKE receiver. In RAKE receivers, for each fractional chip increment, a correlation with the pilot epoch is performed, which may be represented using the complex conjugate of the expected sequence, x.sub.r (n)+x.sub.i (n), as ##EQU1## where: n and m are integer counters cc.sub.r (n) are the real components of the cross-correlation
cc.sub.i (n) are the imaginary components of the cross-correlation PA1 y is the sampled received signals PA1 x is the reference sequence (matched-filter PN sequence) PA1 .tau. is a fractional chip
Thus, as can be seen from equations (1) and (2), four real correlations are performed in the process of performing one complex correlation.
The locally generated PN code sequence (the "local PN code sequence" or "reference PN code sequence") provides the basic elements for generating reference PN sequences, or matched-filter PN vectors, for matched-filter correlation against the received signal. Each PN code sequence is deterministic with a period of 2.sup.N-1 chips (PN values), N an integer greater than 1. The PN code sequence is identical between base-stations in an IS-95 system, and may be augmented by one chip to provide a sequence with a period of 2.sup.15 chips. This PN code sequence is also known as the "short" code in IS-95 systems. The PN code sequence of each base-station, is used for forward channel spreading in IS-95-based CDMA communication systems with a code-phase offset of the PN code sequence unique to a base-station. Therefore, to differentiate between base-stations, each base-station is assigned a unique time offset in the PN code sequence.
A PN code generator provides the code for each of the I and Q channels recursively using a 15.sup.th order polynomial, resulting in a period of, for example, 2.sup.15 -1 chips. The hardware realization for such a PN code generator is a shift register having 15 stages and with selected shift register outputs combined in modulo-2 addition to form the next PN code sequence value that is also the recursive input value to the beginning of the shift register.
Referring to FIG. 1, there is shown a generalized pseudo-noise (PN) generator as may be used to generate a PN code sequence. The hardware implementation of the generator shown in FIG. 1 is of a Fibonacci type, but other types of generators, such as a Galois type, may be used. The generalized PN generator 100 as shown in FIG. 1 includes shift register 102, gain amplifiers 104, and modulo-2 adder 110. PN generator 100 may further include registers 111 and 112 and optional delay 113. In FIG. 1, gain amplifiers 104 have gain values g.sub.[n:0], that are the generating polynomial coefficients of the generating polynomial G. Also, S=S.sub.[n:0] is the state of shift register 102.
As is known in the art, PN generator 100 generates a code in the following manner. First, shift register 102 is loaded with a polynomial "seed" value. The seed value is typically one state of the shift register that forms a portion of the resulting PN sequence. Then, for each clock cycle, the value of the shift register is combined via gain amplifiers 104 in a modulo-2 adder 110. Each gain amplifier 104 adjusts the value in each corresponding stage of the shift register 102 according to generating polynomial coefficients. This is a cyclic process: the value in modulo-2 adder 110 is then applied to the first element of the shift register 102 and the last element is discarded. Each state of the shift register 102 may be loaded into storage registers 111 and 112 for use with, for example, the I and Q channels, respectively. Delay 113 may be employed to provide a known code-phase offset between PN sequences provided from storage registers 111 and 112.
The IS-95 system may augment the PN code sequence by inserting an extra value in the PN code sequence so that the PN code sequence is a multiple of 2. Additional logic (not shown in FIG. 1) inserts the extra value into each sequence following 14 consecutive 1's or 0's. The extra value renders a 2.sup.15 chip period PN sequence. Also, as is known in the art, a periodic bit sequence with a first code phase may be combined with another sequence to form the same periodic bit sequence with a second code phase. This process is known as masking. Consequently, a delayed, or offset, version of the sequence may be generated by modulo-2 addition of appropriate state bits of the shift register 102 with a selected mask. Additional logic for correcting the masked sequences may also be required if the PN code sequence is augmented.
For a receiver in a spread-spectrum system using a matched-filter correlator, as would be apparent to one skilled in the art, many matched-filter PN vectors must be generated in a receiver. For example, in a receiver's acquisition mode the receiver determines whether the pilot signal is present. In acquisition mode, the search finger must search through all fractional chip offsets of the pilot epoch in order to locate the pilot signal. As described previously, each complex correlation actually requires four real correlations. Correlations of search fingers in a RAKE receiver are often performed against multiple, fractional-chip offsets simultaneously, such as during initial search or handoff between base-stations. If a receiver tracks several base stations, as may be required for handoff, then the acquisition mode process must occur for the pilot of each base station.
Further, even when synchronization is achieved when the pilot signal is present, a receiver's data detection mode detects a signature sequence intended for the particular receiver. The signature sequence, in IS-95, may be a "long" PN code sequence for security (i.e., the sequence of the "long" PN code is longer than the sequence of the "short" PN code). In the data detection mode, there are several sub-modes. The sub modes include a paging data mode, a synchronization data mode, and a traffic mode.
For IS-95 systems, during the paging data and traffic modes, the search finger must scan for other signals over a limited search range relative to the time of arrival of the first 64 or 128 chips following the all-zero state of the base station pilot epoch. If the search function is to be accomplished in real time, using a 64 chip matched-filter, the number of accumulators may be calculated as: (64 chips) times (8 offsets per chip) times (four real correlations per complex correlation). Consequently, 2048 accumulators may be required. Since it is not practical to provide 2048 accumulators, prior art correlators have accepted a trade-off between the amount of hardware provided and the time required to complete the search function by implementing multiple time offset correlations such as by operating multiple serial accumulators in parallel.
Simultaneous correlation operations may be achieved using multiple parallel correlators and vector generators. Prior art methods for generating multiple, matched-filter PN vectors include the following. First, a set of multiple, parallel PN code sequence generators, each generating the PN code sequence with a different offset may be employed. Unfortunately, since a receiver performs so many different search operations, this implementation requires an impractical amount of hardware. Second, a single PN code sequence generator may be employed with a set of parallel masks, each mask combined with the local PN code sequence to generate a PN sequence having a different offset. The parallel sequences may be collected in a shift register and applied to the correlator when required. The advantage of this approach is the relatively low clocking rate required (1.2288 MHz). However, in high speed data or base station handoff situations where a large degree of correlation scheduling flexibility is required and several matched-filter PN vectors may be needed in a single symbol, a large quantity of 64-bit shift registers would be required.